iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 7
0
Software Development

天天 LeetCode,立地成佛:三十天從頭開始學演算法系列 第 7

[Day 7] Maximum Depth of Binary Tree: 走進 tree 的世界

  • 分享至 

  • xImage
  •  

今天介紹一種叫做 Tree 的資料結構,這東西看圖懂一半,所以不解釋直接上圖:

https://upload.wikimedia.org/wikipedia/commons/thumb/7/7e/Treedatastructure.png/600px-Treedatastructure.png
(圖片摘自維基百科

好的,大家應該懂了。Tree 就是一種由上而下的結構,點和點之間用線連接起來,對於每條線來說,上方的是父節點,下面的是子節點。對點與點之間來說,父子關係是相對的。一個點可以是某個點的父節點,但又是另一個點的子節點,就像你同時是你爸的兒子但也是你兒子的爸爸一樣,對象不同,身份不同。另外,如果每個點最多都只有兩個子節點,那這棵樹就會變成二元樹。

關於 tree 還有蠻多細節,像是 tree 怎麼組建,或是搜尋 tree 的兩種方法,好兄弟 DFS 和 BFS,這個就留待明天繼續啦。


今天簡單看看 tree 這種資料結構,每個點如果有子節點的話,會用 x.left, x.right 來儲存子節點的數值。之前有講過 divide and conquer,這題就是用遞迴的方式去拆最底層算回來。

https://ithelp.ithome.com.tw/upload/images/20200914/201296627jvV7PhYvb.png

/*
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */

// javascript

var maxDepth = function(root) {
    if (!root) return 0
    return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1
};

上一篇
[Day 6] Jump Game:有種直觀解法叫 Greedy
下一篇
[Day 8] Construct Binary Tree:樹的遍歷
系列文
天天 LeetCode,立地成佛:三十天從頭開始學演算法12
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言